package com.platform.dao.mybatis;

import com.platform.dao.RoleDao;
import com.platform.dao.mybatis.mapper.TbSysRoleMapper;
import com.platform.domain.TbSysRole;
import com.platform.domain.result.TbSysRoleFunction;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: wangyanginfo
 * Date: 12-8-31
 * Time: 下午1:48
 * To change this template use File | Settings | File Templates.
 */
@Service("roleDao")
public class RoleDaoImpl implements RoleDao {

    @Resource
    private TbSysRoleMapper tbSysRoleMapper;

    /**
     * 根据条件查询符合条件的角色集合
     *
     * @param role 查询条件
     * @return 角色集合
     * @throws Exception
     */
    @Override
    public List<TbSysRole> queryRole(TbSysRole role) throws Exception {
        return tbSysRoleMapper.select(role);
    }

    /**
     * 根据用户ID查询符合条件的角色集合
     *
     * @param userId 用户ID
     * @return 角色集合
     * @throws Exception
     */
    @Override
    public List<TbSysRole> queryRoleByUserId(String userId) throws Exception {
        return tbSysRoleMapper.selectByUserId(userId);
    }

    /**
     * 根据用户ID查询除用户授权角色以外的角色集合
     *
     * @param userId 用户ID
     * @return 角色集合
     * @throws Exception
     */
    @Override
    public List<TbSysRole> queryRoleByNotUserId(String userId) throws Exception {
        return tbSysRoleMapper.selectByNotUserId(userId);
    }

    /**
     * 根据用户ID查询符合条件的角色极权限集合
     *
     * @param userId 用户ID
     * @return 角色集合
     * @throws Exception
     */
    @Override
    public List<TbSysRoleFunction> queryRoleFunctionByUserId(String userId) throws Exception {
        return tbSysRoleMapper.queryRoleFunctionByUserId(userId);
    }

    /**
     * 插入新的角色
     *
     * @param role 角色对象
     * @return 执行结果
     * @throws Exception
     */
    @Override
    public int insertRole(TbSysRole role) throws Exception {
        return tbSysRoleMapper.insert(role);
    }

    /**
     * 更新角色
     *
     * @param role 角色对象
     * @return 执行结果
     * @throws Exception
     */
    @Override
    public int updateRole(TbSysRole role) throws Exception {
        return tbSysRoleMapper.update(role);
    }

    /**
     * 根据主键删除角色
     *
     * @param roleId 角色ID
     * @return 执行结果
     * @throws Exception
     */
    @Override
    public int deleteRole(String roleId) throws Exception {
        return tbSysRoleMapper.deleteByPrimaryKey(roleId);
    }
}
